An analog-to-digital converter (ADC) of the flash type contains a set of input comparators that ideally produce a "thermometer" code--i.e., a digital code consisting of a group of binary "1s" followed by a group of binary "0s" or vice versa--as an intermediate step in converting an analog input voltage into a digital output signal. The thermomoter code has no "0s" in the group of "1s" and vice versa. For example, see the flash ADC described in Peterson, "A monolithic Video A/D Converter," IEEE JSSC, Dec. 1979, pp. 932-937.
Table I below illustrates the structure of an M-bit thermometer code in more detail. M is 3 or more. The code consists of M digital signals represented here as bits D.sub.1, D.sub.2 . . . D.sub.M. Including the "all 0" and "all 1" cases, there are M+1 permutations of "1s" and "0s".
The permutations can be defined in algorithmic form as a function of an integer variable P. An arbitrary one of bits D.sub.1 -D.sub.M is referred to as bit D.sub.i, where "i" is a running integer.
TABLE I ______________________________________ Thermometer Code) P D.sub.1 D.sub.2 D.sub.3 D.sub.4 . . . D.sub.M-1 D.sub.M ______________________________________ &lt;0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 2 1 1 0 0 0 0 3 1 1 1 0 0 0 4 1 1 1 1 0 0 . . M-1 1 1 1 1 1 0 M 1 1 1 1 1 1 &gt;M 1 1 1 1 1 1 ______________________________________
At any particular value of P in the digital range extending from 0 to M, each bit D.sub.i is a "0" for i&gt;P and a "1" for i.ltoreq.P. This expresses the concept that the size of the group of "1s" increases by one each time that P increases by 1. P is the digital equivalent of the analog input voltage. The positions of the "1s" and "0s" could be reversed in Table I.
A "circular" code is an extension of a thermometer code to include all the possible permutations of a group of "1s" and a group of "0s". Table II below illustrates the organization of an M-bit circular code. The permutations are defined as a function of variable P in the same manner as the thermometer code. In fact, the portion of Table II for 0.ltoreq.P.ltoreq.M is the same as Table I. The remainder of Table II shows how the group of "0s" reappears and then progressively increases in size to enable the circular code to "wrap around" the ends when P reaches 2M.
TABLE II ______________________________________ Circular Code P D.sub.1 D.sub.2 D.sub.3 D.sub.4 . . . D.sub.M-1 D.sub.M ______________________________________ 0 0 0 0 0 0 0 1 1 0 0 0 0 0 2 1 1 0 0 0 0 3 1 1 1 0 0 0 4 1 1 1 1 0 0 . . M-1 1 1 1 1 1 0 M 1 1 1 1 1 1 M+1 0 1 1 1 1 1 M+2 0 0 1 1 1 1 M+3 0 0 0 1 1 1 M+4 0 0 0 0 1 1 . . . 2M-1 0 0 0 0 0 1 2M 0 0 0 0 0 0 ______________________________________
Circular codes are used in ADCS of the folding type such as that disclosed in U.S. patent application, Ser. No. 809,453, filed Dec. 16, 1985, continued as Ser. No. 096,793, filed Sept. 14, 1987, now U.S. Pat. No. 4,831,379.
The input stage that generates a thermometer or circular code occasionally causes a "1" to be erroneously mixed in the group of "0s" or vice versa. This sort of error is referred to here as a transition bit error because there is at least one extra transition between "0" and "1". A transition bit error normally occurs near where the code makes its intended transitions between "0" and "1", especially in flash and folding ADCs.
For example, a 6-bit thermometer code (D.sub.1 D.sub.2 D.sub.3 D.sub.4 D.sub.5 D.sub.6) appears as (110000) when P is 2. If D.sub.4 is produced as a "1" instead of a "0", the code actually appears as (110100). The presence of three transitions between "0" and "1" indicates a transition bit error.
The error creates two main problems. Firstly, one cannot tell whether D.sub.4 should be a "0" or D.sub.3 should be a "1" because the bit transistions occur after the other. The actual code does not provide any indication whether the intended code is (110000) or (111100). Secondly, in the absence of a suitable correction mechanism, the output circuitry that transforms the code into the digital output signal in an ADC is usually not designed to handle situations where there is more than one transition between "0" and "1". A bit transition error can seriously foul up the output signal.
One way of attacking these problems is to put the code through a digital logic circuit that either converts the "1" at D.sub.4 to a "0" or converts the "0" at D.sub.3 to a "1". The resulting code is in a thermometer format. The bit error is 0 or 2 because of the uncertainty about the intended code. The average bit error is 1. However, the mean-square bit error is .sqroot.2 or approximately 1.4. This is unduly high for performance indicators, such as signal-to-noise ratio, based on the mean-square error rather than the average error.